Introduccion

Los datos obtenidos de Kaggle tienen la informacion atmosferica de varios años en australia, datos en los que viene incluida desde la velocidad del viento hasta la temperatura, en total 23 variables recogidas durante varios años en distintas ciudades de australia con las que se obtienen un data set de 140.000 lineas aproximadamente.

Nuestro objetivo será predecir la lluvia del dia siguiente con los datos metereologicos del dia.

Primeros pasos sobre nuestro DataSet

Con este dataset tan grande lo primero que nos planteamos fue centrarnos en dos cosas

-Utilizar una zona concreta de australia, sacada de la variable localizacion, de la cual elegimos 4 ciudades situadas en la costa sureste de Australia y -Utilizar la variable temporal de alguna forma, ya que considerabamos que tenia importancia pero no podiamos usar cada dia del año como un dato diferente, por lo que decidimos obtener apartir de la fecha la estacion del año en la que estaba cada linea,

Variables

Analizamos las variables individuales por separado con distintos graficos.

##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##   -8.00    7.90   11.60   11.44   15.50   33.90       9
## $rango
## [1] -8.0 33.9
## 
## $Varianza
## [1] 36.03961
## 
## $Desciación_tipica
## [1] 6.0033
## [1] 9824

##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##   -8.00    7.90   11.60   11.44   15.50   33.90       9
## $rango
## [1]  4.1 45.8
## 
## $Varianza
## [1] 39.63946
## 
## $Desciación_tipica
## [1] 6.295988

##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##   0.000   0.000   0.000   2.165   0.600 119.400     181
## $rango
## [1]   0.0 119.4
## 
## $Varianza
## [1] 49.6903
## 
## $Desciación_tipica
## [1] 7.049135

##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##   0.000   2.400   4.200   5.018   6.800  43.400    2493
## $rango
## [1]  0.0 43.4
## 
## $Varianza
## [1] 13.31007
## 
## $Desciación_tipica
## [1] 3.648297

##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##   0.000   2.000   6.000   4.694   7.000   9.000    4111
## $rango
## [1] 0 9
## 
## $Varianza
## [1] 7.760572
## 
## $Desciación_tipica
## [1] 2.78578

##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##   0.000   2.000   5.000   4.696   7.000   8.000    4298
## $rango
## [1] 0 8
## 
## $Varianza
## [1] 6.968623
## 
## $Desciación_tipica
## [1] 2.639815

##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##   -1.30   11.70   15.40   15.55   19.30   38.60      24
## $rango
## [1] -1.3 38.6
## 
## $Varianza
## [1] 33.1232
## 
## $Desciación_tipica
## [1] 5.755276

##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##    3.70   15.90   20.00   20.56   24.50   44.70      17
## $rango
## [1]  3.7 44.7
## 
## $Varianza
## [1] 37.76001
## 
## $Desciación_tipica
## [1] 6.144917

##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##   0.000   2.400   4.200   5.018   6.800  43.400    2493
## $rango
## [1]  0.0 43.4
## 
## $Varianza
## [1] 13.31007
## 
## $Desciación_tipica
## [1] 3.648297

## 
##  Variables sorted by number of missings: 
##  Variable     Count
##         x 0.2537663

##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##    0.00    4.10    7.90    7.15   10.20   13.90    2667
## $rango
## [1]  0.0 13.9
## 
## $Varianza
## [1] 14.73037
## 
## $Desciación_tipica
## [1] 3.838016

## 
##  Variables sorted by number of missings: 
##  Variable    Count
##         x 0.271478

##    Length     Class      Mode 
##      9824 character character

## 
##  Variables sorted by number of missings: 
##  Variable     Count
##         x 0.1124796

##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##   11.00   31.00   39.00   40.64   48.00  106.00    1104

## 
##  Variables sorted by number of missings: 
##  Variable     Count
##         x 0.1123779

##    Length     Class      Mode 
##      9824 character character

## 
##  Variables sorted by number of missings: 
##  Variable      Count
##         x 0.01842427

##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   0.000   0.000   0.000   2.164   0.800 119.400

## 
##  Variables sorted by number of missings: 
##  Variable Count
##         x     0

##    Length     Class      Mode 
##      9824 character character

## 
##  Variables sorted by number of missings: 
##  Variable Count
##         x     0

## [1] 0

##           RainTomorrow
## WindDir9am   No  Yes
##        E    243   59
##        ENE  206   55
##        ESE  275   70
##        N    848  355
##        NE   350  112
##        NNE  434  148
##        NNW  416  137
##        NW   355  114
##        S    471  103
##        SE   368   92
##        SSE  407  103
##        SSW  393  129
##        SW   333  120
##        W   1008  276
##        WNW  585  141
##        WSW  306  103
##             WindDir9am
## RainTomorrow    E  ENE  ESE    N   NE  NNE  NNW   NW    S   SE  SSE  SSW   SW
##          No   243  206  275  848  350  434  416  355  471  368  407  393  333
##          Yes   59   55   70  355  112  148  137  114  103   92  103  129  120
##             WindDir9am
## RainTomorrow    W  WNW  WSW
##          No  1008  585  306
##          Yes  276  141  103

## [1] 0

##           RainTomorrow
## WindDir3pm  No Yes
##        E   561 108
##        ENE 349  77
##        ESE 349 102
##        N   521 183
##        NE  346  92
##        NNE 210  89
##        NNW 527 184
##        NW  609 185
##        S   558 184
##        SE  295  91
##        SSE 477 135
##        SSW 321 171
##        SW  480 124
##        W   480 147
##        WNW 683 147
##        WSW 638 172
##              WindDir3pm   E ENE ESE   N  NE NNE NNW  NW   S  SE SSE SSW  SW   W WNW WSW
## RainTomorrow                                                                           
## No                      561 349 349 521 346 210 527 609 558 295 477 321 480 480 683 638
## Yes                     108  77 102 183  92  89 184 185 184  91 135 171 124 147 147 172

##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##    0.00    7.00   11.00   13.27   19.00   63.00     207
## $rango
## [1] NA NA
## 
## $Varianza
## [1] NA
## 
## $Desciación_tipica
## [1] NA
## [1] 9824

##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##    0.00   13.00   19.00   18.82   24.00   65.00     199
## $rango
## [1] NA NA
## 
## $Varianza
## [1] NA
## 
## $Desciación_tipica
## [1] NA
## [1] 9824

##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##    5.00   56.00   68.00   67.22   80.00  100.00      71
## $rango
## [1] NA NA
## 
## $Varianza
## [1] NA
## 
## $Desciación_tipica
## [1] NA
## [1] 9824

##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##    4.00   37.00   48.00   48.95   60.00   99.00      30
## $rango
## [1] NA NA
## 
## $Varianza
## [1] NA
## 
## $Desciación_tipica
## [1] NA
## [1] 9824

##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##   982.3  1013.6  1018.6  1018.5  1023.5  1040.2     201
## $rango
## [1] NA NA
## 
## $Varianza
## [1] NA
## 
## $Desciación_tipica
## [1] NA
## [1] 9824

##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##   985.5  1011.4  1016.3  1016.2  1021.1  1037.8     196
## $rango
## [1] NA NA
## 
## $Varianza
## [1] NA
## 
## $Desciación_tipica
## [1] NA
## [1] 9824

EDA

En esta parte haremos un analisis de las variables en comparacion con otras

Imputacion de datos faltantes

Cuando hemos terminado el analisis de las variables y hemos estudiado la correlacion que hay entre ellas podemos imputar los datos faltantes utilizando el resto de variables que tenemos. aprovechandonos asi de las variables que mas relación tienen entre ellas.

Detección, tratamiento e imputación de datos faltantes Valores Faltantes Visualización de valores faltantes Variables con más valores faltantes: Sunshine, Evaporation, Cloud3pm, Cloud9am, Pressure3pm, Pressure9am

## 
##  Variables sorted by number of missings: 
##  Variable        Count
##  Rainfall 0.0184242671
##   Temp9am 0.0024429967
##   Temp3pm 0.0017304560
##   MinTemp 0.0009161238
##   MaxTemp 0.0008143322
##  Location 0.0000000000
## 
##  Missings in variables:
##  Variable Count
##   MinTemp     9
##   MaxTemp     8
##  Rainfall   181
##   Temp9am    24
##   Temp3pm    17

## 
##  Variables sorted by number of missings: 
##  Variable    Count
##  Cloud3pm 0.437500
##  Cloud9am 0.418465

Variables Temp9am & Temp3pm: método: imputación simple: KNN Posible imputación simple mediante un algoritmo de clustering k-NN (con la función VIM:kNN) Parece que tiene sentido: ###Comprobaciones: Variables MinTemp & MaxTemp: método: imputación simple: KNN ###Comprobaciones: Variables Humidity9am & Rainfall: método: imputación simple: KNN ###Comprobaciones:

##            Date          Season        Location         MinTemp         MaxTemp 
##               0               0               0               0               0 
##        Rainfall     Evaporation        Sunshine     WindGustDir   WindGustSpeed 
##               0            2493            2667            1105            1104 
##      WindDir9am      WindDir3pm    WindSpeed9am    WindSpeed3pm     Humidity9am 
##             709             229             207             199               0 
##     Humidity3pm     Pressure9am     Pressure3pm        Cloud9am        Cloud3pm 
##              30             201             196            4111            4298 
##         Temp9am         Temp3pm       RainToday         RISK_MM    RainTomorrow 
##               0               0             181               0               0 
##     Temp9am_imp     Temp3pm_imp     MaxTemp_imp     MinTemp_imp Humidity9am_imp 
##               0               0               0               0               0 
##    Rainfall_imp 
##               0

Aplicamos el mismo método para los nules de test. Para ello hay que imputarlos junto con el dataframe de train.

Transformaciones de variables cuantitativas La única que no parece seguir una distribución normal es la variable RainFall No se le puede aplicar logaritmos porque hay nulos. Resto de variables: siguen distribución normal

## [1] 1228   26
## [1] 9824   26
##                     [,1]
## Date           0.0000000
## Season         0.0000000
## Location       0.0000000
## MinTemp        0.0000000
## MaxTemp        0.0000000
## Rainfall       0.0000000
## Evaporation    0.0000000
## Sunshine      27.1478013
## WindGustDir   11.2479642
## WindGustSpeed  0.3664495
## WindDir9am     7.2170195
## WindDir3pm     2.3310261
## WindSpeed9am   2.1070847
## WindSpeed3pm   2.0256515
## Humidity9am    0.0000000
## Humidity3pm    0.3053746
## Pressure9am    2.0460098
## Pressure3pm    1.9951140
## Cloud9am      41.8464984
## Cloud3pm      43.7500000
## Temp9am        0.0000000
## Temp3pm        0.0000000
## RainToday      0.0000000
## RISK_MM        0.0000000
## RainTomorrow   0.0000000
## LogRainfall    0.0000000

Modelo

El modelo utilizado es una regresion lineal, sacamos los valores de la recta para cada variable mediante lasso

###Estandarización:

## [1] 456  47
## [1] 3808   47

##  [1] "(Intercept)"     "MaxTemp"         "Sunshine"        "WindGustSpeed"  
##  [5] "WindDir9amN"     "WindDir3pmENE"   "WindDir3pmNNW"   "WindDir3pmNW"   
##  [9] "WindDir3pmSSW"   "WindDir3pmW"     "Humidity3pm"     "Pressure3pm"    
## [13] "Cloud3pm"        "RainToday"       "RISK_MM"         "Season_spring"  
## [17] "WindGustDir_NNW" "WindGustDir_ENE"
## 
## Call:
## glm(formula = RainTomorrow ~ ., family = binomial, data = new_train)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -2.4483  -0.6124  -0.3361  -0.1332   2.9795  
## 
## Coefficients:
##               Estimate Std. Error z value Pr(>|z|)    
## (Intercept)   -3.49294    0.15475 -22.571  < 2e-16 ***
## MaxTemp        0.17552    0.05679   3.091    0.002 ** 
## RainToday      0.63281    0.10045   6.300 2.98e-10 ***
## WindGustSpeed  0.45867    0.05463   8.396  < 2e-16 ***
## Humidity3pm    1.01841    0.06392  15.933  < 2e-16 ***
## Pressure3pm   -0.32633    0.05310  -6.145 7.99e-10 ***
## Cloud3pm       0.29335    0.02560  11.459  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 4164.7  on 3807  degrees of freedom
## Residual deviance: 2938.0  on 3801  degrees of freedom
## AIC: 2952
## 
## Number of Fisher Scoring iterations: 5

## Confusion Matrix and Statistics
## 
##         
## glm_test   0   1
##        0 318  50
##        1  36  52
##                                           
##                Accuracy : 0.8114          
##                  95% CI : (0.7724, 0.8463)
##     No Information Rate : 0.7763          
##     P-Value [Acc > NIR] : 0.03879         
##                                           
##                   Kappa : 0.4291          
##                                           
##  Mcnemar's Test P-Value : 0.16097         
##                                           
##             Sensitivity : 0.5098          
##             Specificity : 0.8983          
##          Pos Pred Value : 0.5909          
##          Neg Pred Value : 0.8641          
##              Prevalence : 0.2237          
##          Detection Rate : 0.1140          
##    Detection Prevalence : 0.1930          
##       Balanced Accuracy : 0.7041          
##                                           
##        'Positive' Class : 1               
##